home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Libris Britannia 4
/
science library(b).zip
/
science library(b)
/
COMMUNIC
/
H191.ZIP
/
CA29-3.EXE
/
SETTIME.CMD
< prev
next >
Wrap
OS/2 REXX Batch file
|
1993-04-19
|
4KB
|
138 lines
S0 = "CdT" ; values are: EST, CST, MST, PST, EDT, CDT, MDT, PDT
;
; ----- COM-AND set DOS clock
;
; This script dials the US Naval Observatory and sets the DOS clock
; with the time obtained. NOTE: If you change this script, please
; do not connect to the Observatory longer than absolutely required.
; Courteous usage will most likely retain this service.
;
; S0 should be set with your timezone (EST, CST, MST, or PST)... if
; left blank, this script will look for an EBL variable &ZONE... if
; that is not found, this script will ask for it.
;
; Note that this script, as supplied, only invokes DOS's TIME command
; to set the clock. If you have a hardware clock, the TIME command of
; DOS will not necessarily change the hardware clock (and thus last
; accross a power off).
;
; The value in S0, if supplied, establishes the timezone. You must
; manually decide (for now) if daylight savings is used in your area.
;
; ------------------------------------------------------------
; Script: John Poindexter, commenced 2/89
; Modified for scheduler 4/93
; ------------------------------------------------------------
;
; If the value in S0 is null, look for EBL's &ZONE
; .. This script does not require EBL if the above is set.
;
LEGEND "SETTIME v1.0"
IF NULL S0 ; If value not set above
EBL S0 &ZONE ; .. Ask EBL if it knows the zone
ELSE ; If set above
SET SUCCESS ON ; .. Fake EBL good completion
ENDIF
;
; If no EBL and no value, open a window and ask
;
IF FAILED ; No zone in script, and no EBL
WOPEN 10,1, 13,77 (contrast) Exit
ATSAY 11, 3 (contrast) "Enter your timezone (EST, EDT, CST, CDT, ...)"
ATSAY 12, 3 (contrast) "->"
ATSAY 13,26 (contrast) " Press ESC to exit"
ATGET 12,6 (contrast) 3 S0
WCLOSE ; Restore screen under
IF NULL S0 GOTO Exit ; Null entry terminates script
ENDIF
;
; Using the Zone value, look up the hour offset
;
S1 = "E5C6M7P8" ; Time zone letters and time difference from GMT.
FIND S1 S0(0:0) N0 ; Case insensitive table lookup
IF NOT FOUND ; Unknown zone character
MESSAGE "^M^JYou need to include your time zone in S1 in script.^M^J"
GOTO EXIT
ENDIF
;
; COmpute the hour offset (allowing for DAYLIGHT Savings)
;
S1 = S1(N0+1:N0+1) ; Take hour offset from table
ATOI S1 N0 ; COnvert to binary (w/o error message)
IF FIND S0 "D" ; Look for daylight savings time
N0 = N0 - 1 ; Adjust for daylight savings
ENDIF
;
; Set-up to dial the Naval Observatory
;
SET FLAG(0) OFF ; Flag indicates wrap to previous day
ON ESCAPE GOSUB UNAVAILABLE
IF FIND "_DDOVER" "OFF" SET BAUD 1200 ; Set parms for USNO (1200...)
SET PARITY NONE ; .. (n,8,1)
SET DATA 8 ; ..
SET STOP 1 ; ..
SET MDEL 30 ; Slow it down
;
; Dial the Naval Observatory
;
N99 = 1
LOOP:
LEGEND "SETTIME v1.0 dialing attempt #"*N99
TRANSMIT "_MESCa"&"!"; Wake up the modem
PAUSE 1
TRANSMIT "_DPREf"&"1-202-653-0351"&"_DSUFf"&"" ; Dialing command
WAITFOR "_MCONn"&"" 45 ; Remember to trim trailing blanks
IF NOT WAITFOR ; DIAL failed
TRANSMIT "_MESCa"&"!"
TRANSMIT "_MHANg"&""
INC N99 ; COunt the try
IF N99 GT 10 GOTO Unavailable
GOTO LOOP
ENDIF
;
; Read the UTC
;
GET_TIME:
WAITFOR "*" 30
RGET S0
RGET S0
MESSAGE S0
IF NOT FIND S0(17:19) "UTC"
GOTO GET_TIME
ENDIF
;
; Extract the time from the message
;
ATOI S0(10:11) N1 ; Extract hour #
IF LT N1 N0 ; Test for negative after adjust
N1 = N1 + 24 ; Ensure positive hour number after adjust
SET FLAG(0) ON ; .. and flag the fact
ENDIF
;
; And give the TIME to DOS
;
TIME S3 1 ; Save current clock
N1 = N1 - N0 ; Adjust for timezone
S1 = "TIME "*N1&":"&S0(12:13)&":"&S0(14:15)
DOS S1 ; Tell DOS to set the clock
MESSAGE S1 ; Display on screen too
CLOG "* SETTIME clock change from:" *S3*" to "*S1(5:79)
HANGUP
GOTO Exit
;
; Failed DIAL
;
UNAVAILABLE:
HANGUP
MESSAGE "^M^JUnable to reach the Naval Observatory.^M^J"
GOTO Exit
;
; General exit (modem not connected yet)
;
EXIT:
IF ISSC "$$$SCHED" EXECUTE "$$$SCHED"
IF FCALLED FRETURN ; Return if called
EXIT